package com.cwx.mychat.entity.po;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * 作者： cwx
 * 时间： 2025/5/26 19:07
 * 版本： 1.0
 * 注释：
 */
@Data
@TableName("ai_config")
public class AIConfig implements Serializable {


    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * ai配置id
     */
    @TableId
    private Integer aiId;
    /**
     * api-key
     */
    private String apiKey;
    /**
     * 基础url
     */
    private String baseUrl;
    /**
     * 模型
     */
    @TableField(exist = false)
    private List<Model> model;
    /**
     * 温度
     */
    private Double temperature;
    /**
     * 最大token
     */
    private Integer maxTokens;
    /**
     * 系统提示词
     */
    private String systemPrompt;
    /**
     * 模型类型
     */
    private String modelType;
    /**
     * 是否启用
     */
    private Integer enable;
    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;
    /**
     * 更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;
    /**
     * 是否系统自带
     */
    private Integer isSystem;
    /**
     * 用户id
     */
    private String userId;

    public record Model(
                        @JsonProperty("aiModelId") Integer aiModelId,
                        @JsonProperty("modelName") String modelName,  // 显式标注属性名
                        @JsonProperty("enable") Integer enable){}

}
